package com.woniuxy.util;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 统一返回类
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ResponseData<T> {
    private Integer code;
    private T data;
    private String msg;

    //封装一个统一的 需要参数 的 成功 方法
    public static <T> ResponseData success(T data) {  //注意有泛型参数的函数命名规则
        return new ResponseData(ResponseEnum.SUCCESS.getCode(), data, "操作成功");
    }

    //封装一个统一的 需要无参数 的 成功 方法
    public static ResponseData success() {
        return new ResponseData(ResponseEnum.SUCCESS.getCode(), null, "操作成功");
    }

    //封装一个统一的 需要无参数 的 失败 方法
    public static ResponseData fail(ResponseEnum responseEnum) { //由于失败异常的返回code的情况很多, 所以不能直接返回500
        return new ResponseData(responseEnum.getCode(), null, "操作失败");
    }

    //封装一个统一的 需要参数 的 失败 方法
    public static <T> ResponseData fail(ResponseEnum responseEnum, T data) {  //注意有泛型参数的函数命名规则
        return new ResponseData(responseEnum.getCode(), data, "操作失败");
    }

}
